<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>#Requires | AutoHotkey</title>
<meta name="description" content="The #Requires directive displays an error and quits if a version requirement is not met." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>#Requires <span class="ver">[v1.1.33+]</span></h1>

<p>如果不符合版本要求, 则显示错误并退出.</p>

<pre class="Syntax"><span class="func">#Requires</span> Requirement</pre>

<h2 id="Parameters">参数</h2>
<dl>
  <dt>Requirement</dt>
  <dd>
    <p>如果不是以单词 "AutoHotkey" 开头, 则显示错误消息并退出程序. 这将保证清晰, 并为将来的使用保留指令. AutoHotkey 的其他分支可能支持其他名称.</p>
    <p>否则, 单词 "AutoHotkey" 后面应该跟下列任意组合, 并用空格或制表符分隔:</p>
    <ul>
      <li>一个可选的字母 "v" 后面跟着一个版本号. <a href="../Variables.htm#AhkVersion">A_AhkVersion</a> 必须大于或等于此版本, 但小于下一个主版本.</li>
      <li><span class="ver">[v1.1.36+]:</span> <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code> 或 <code>=</code> 中的一个, 后面紧跟着可选的字母 "v" 和版本号. 例如, <code class="no-highlight">&gt;=1.1.36 &lt;1.1.37</code> 仅允许 v1.1.36.*.</li>
      <li><span class="ver">[v1.1.36+]:</span> 以下单词之一, 用于限制可运行脚本的可执行文件(EXE) 的类型: "Unicode", "ANSI", "32-bit", "64-bit".</li>
    </ul>
  </dd>
</dl>

<h2>错误消息</h2>
<p>显示的消息取决于解释该指令的 AutoHotkey 的版本.</p>
<p><span class="ver">[v1.1.33+]:</span> 仅当需要不同版本的 AutoHotkey 时才显示当前的 AutoHotkey 版本.</p>
<p><span class="ver">[v1.1.36+]:</span> AutoHotkey 的路径, 版本和构建总是显示在错误消息中.</p>
<p>如果脚本启动时使用的 AutoHotkey 版本不支持这个指令, 错误信息如下:</p>
<pre class="no-highlight">Line Text: #Requires <i>%Requirement%</i>
Error: This line does not contain a recognized action.</pre>

<h2 id="Remarks">备注</h2>
<p>如果脚本使用了在早期版本中不可用的语法或函数, 使用这条指令可以确保错误信息显示未满足的要求, 而不是显示任意的语法错误. 这不能用 <code>if (A_AhkVersion &lt;= "1.1.33")</code> 这样的指令来做, 因为在脚本的其他地方出现语法错误会使脚本无法执行.</p>
<p>当分享一个脚本或在网上发布代码时, 使用这个指令可以让任何发现代码的人很容易地识别出它是为哪个版本的 AutoHotkey 准备的.</p>
<p>其他程序或脚本可以出于各种目的检查这个指令. 例如, 安装 AutoHotkey v2 自带的启动器可能会用它来决定启动哪个 AutoHotkey 可执行文件, 而脚本编辑器或相关工具可能会用它来决定如何解释或突出显示脚本文件.</p>
<p id="compare">版本字符串是以一系列点分隔的部分进行比较, 后面的连字符和预发布标识符是可选的.</p>
<ul>
  <li>数值部分是以数字来比较的. 例如, v1.01 = v1.1, 但 a20 &gt; a112.</li>
  <li>在相同的位置上, 数值部分总是被认为比非数字部分低.</li>
  <li>任何缺失的点定界部分都假定为零. 例如, v1.1.33-alpha 等同于 v1.1.33.00-alpha.0.</li>
  <li>非数字部分按字母顺序比较, 并区分大小写.</li>
  <li>预发布版本被认为比标准版本低. 例如, <code>#Requires AutoHotkey v2</code> 的脚本将不能在 v2.0-a112 上运行. 要允许预发布版本, 请在后缀中加入一个连字符. 例如: <code class="no-highlight">v2.0-</code>.</li>
  <li>任何以 "+" 开头的后缀将被忽略.</li>
</ul>
<p>尾部的 "+" 足以向读者表明可以接受更晚的版本, 但不是必须的.</p>
<p>和其他指令一样, #Persistent 不能有条件地执行.</p>

<h2 id="Related">相关</h2>
<p><a href="VerCompare.htm">VerCompare()</a>, <a href="_ErrorStdOut.htm">#ErrorStdOut</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 使该脚本仅在 v1.1.33.00 及以后的 v1.* 版本上运行.</p>
<pre>#Requires AutoHotkey v1.1.33+
MsgBox This script will run only on v1.1.33.00 and later v1.* releases.</pre>
</div>

<div class="ex" id="ExUpper">
<p><a class="ex_number" href="#ExUpper"></a> 使脚本只能在版本 1.1.36.00 和之后的 v1.1.* 的版本上运行.</p>
<pre>#Requires AutoHotkey &gt;=1.1.36 &lt;1.2</pre>
</div>

<div class="ex" id="ExBuild">
<p><a class="ex_number" href="#ExBuild"></a> 使脚本仅在 64 位解释器(EXE) 下运行.</p>
<pre>#Requires AutoHotkey 64-bit</pre>
</div>

<div class="ex" id="ExVerBuild">
<p><a class="ex_number" href="#ExVerBuild"></a> 使脚本只在 64 位解释器(EXE) 版本 1.1.36.00 或更高版本上运行.</p>
<pre>#Requires AutoHotkey v1.1.36 64-bit</pre>
</div>

</body>
</html>